import request from '@/utils/request.js'; // 引入你封装的axios实例

/**
 * 添加一条日志记录
 * @param {object} logData - 包含日志信息的对象
 */
export function addLog(logData) {

  return request({
    url: '/log/setLogs', // 后端接口地址
    method: 'post',
    data: logData // @RequestBody注解需要用data
  });
}
export function getLogs() {
  return request({
    url: '/log/getLog', // 对应后端的 @GetMapping("/getLog")
    method: 'get'
  });
}

async function recordGroupLog(actionType, actionName, status) {
  try {
    // 从 localStorage 获取当前用户信息
    const userInfoStr = localStorage.getItem('userInfo');
    if (!userInfoStr) {
      console.warn('无法获取用户信息，日志记录已跳过。');
      return;
    }
    const currentUser = JSON.parse(userInfoStr);
    console.log(currentUser.userId)
    console.log(currentUser.name)
    const logData = {
      userId: currentUser.userId,
      userName: currentUser.name,
      module: '分组管理', // 模块是固定的
      actionType,       // 操作类型，由参数传入
      actionName,       // 操作名称，由参数传入
      status,           // 操作状态，由参数传入
    };

    // 调用通用的 addLog 函数发送日志，并用.catch忽略其本身的错误
    await addLog(logData).catch(logErr => {
      console.error('记录日志时发生错误，但不影响主流程:', logErr);
    });

  } catch (e) {
    console.error('准备日志数据时发生异常:', e);
  }
}

// --- 导出具体的日志记录动作 ---

/**
 * 记录成功创建分组的日志
 * @param {string} groupName - 创建的分组名称
 */
export function logCreateGroupSuccess(groupName) {
  recordGroupLog('新建分组', `成功创建分组: "${groupName}"`, '成功');
}

/**
 * 记录创建分组失败的日志
 * @param {string} groupName - 尝试创建的分组名称
 */
export function logCreateGroupFailure(groupName) {
    recordGroupLog('新建分组', `尝试创建分组: "${groupName}" 时失败`, '失败');
}

/**
 * 记录成功删除分组的日志
 * @param {Array<string>} groupNames - 被删除的分组名称数组
 */
export function logDeleteGroupsSuccess(groupNames) {
    const actionName = `成功删除 ${groupNames.length} 个分组: [${groupNames.join(', ')}]`;
    recordGroupLog('删除分组', actionName, '成功');
}

/**
 * 记录删除分组失败的日志
 */
export function logDeleteGroupsFailure() {
    recordGroupLog('删除分组', '尝试删除分组时失败', '失败');
}

/**
 * 记录成功更新分组状态的日志
 * @param {string} groupName - 分组名称
 * @param {'正常' | '禁用'} newStatus - 更新后的新状态
 */
export function logToggleStatusSuccess(groupName, newStatus) {
    const actionName = `将分组 "${groupName}" 的状态更新为: ${newStatus}`;
    recordGroupLog('更新状态', actionName, '成功');
}

/**
 * 记录更新分组状态失败的日志
 * @param {string} groupName - 分组名称
 */
export function logToggleStatusFailure(groupName) {
    const actionName = `尝试更新分组 "${groupName}" 的状态时失败`;
    recordGroupLog('更新状态', actionName, '失败');
}
